#ifndef __FONT_FREETYPE2_H
#define __FONT_FREETYPE2_H

#include <config.h>

#ifdef FONT_FREETYPE2_SUPPORT

#include <types.h>
#include <ft2build.h>
#include <freetype/freetype.h>
#include <freetype/ftglyph.h>
#include FT_FREETYPE_H

typedef struct ft_font {
	FT_Library     lib;
	FT_Face        face;
	int            width;
	int            height;
#ifdef FONT_USE_MMAP
	int            font_fd;
	FT_Long        font_size;
	FT_Byte        *font_base;
#endif
	char           *font_file;
	struct ft_font *prev;
	struct ft_font *next;
} FT_FONT;

#define ERR_FT2_INIT_LIB  -1;
#define ERR_FT2_NEW_FACE  -2;
#define ERR_FT2_CHAR_ENC  -3;
#define ERR_FT2_GET_GLYPH -4;
#define ERR_FT2_ALLOC_MEM -5;
#define ERR_FT2_FONT_FILE -6;
#define ERR_FT2_FONT_MMAP -7;

FT_FONT *freetype2_alloc(void);
void freetype2_free(FT_FONT *f);
FT_FONT *freetype2_add_face(char *font_file, int size);
FT_FONT *freetype2_get_face(char *font_file);
u8 *freetype2_load_bmp(FT_FONT *ft, u32 code, u32 size, COLOR *bg, COLOR *fg);

#endif /* FONT_FREETYPE2_SUPPORT */
#endif /* __FONT_FREETYPE2_H */
